package com.rushb.rushbproduct.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.rushb.rushbproduct.constont.ErrorCode;
import com.rushb.rushbproduct.entity.ProdPlat;
import com.rushb.rushbproduct.entity.dto.*;
import com.rushb.rushbproduct.mapper.ProdPlatMapper;
import com.rushb.rushbproduct.result.Result;
import com.rushb.rushbproduct.service.ProdPlatService;
import com.rushb.rushbproduct.util.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * rush-b</n>
 * ProductServiceimpl
 * </p>
 *
 * @author zhaolun.li
 * @since 2020/11/30 17:04
 */
@Slf4j
@Service
public class ProdPlatServiceimpl extends ServiceImpl<ProdPlatMapper, ProdPlat> implements ProdPlatService {

    @Autowired
    private ProdPlatMapper prodPlatMapper;

    @Override
    public Result<List<ProdPlat>> selectAllProdPlat() {
        List<ProdPlat> list = prodPlatMapper.selectList(new QueryWrapper<ProdPlat>().eq("del_flag","0"));
        return new Result<>(list);
    }

    @Override
    public Result<List<ProdPlat>> selectProdPlat(SelectProdPlatDto prodPlat) {
        QueryWrapper<ProdPlat> wrapper = new QueryWrapper<>();
        List<ProdPlat> list = new ArrayList<>();
        if(!BeanUtil.isEmpty(prodPlat)){
            if(prodPlat.getId() != null && !prodPlat.getId().equals("")){
                wrapper.eq("id",prodPlat.getId());
            }  if (prodPlat.getProdPlat() != null && !prodPlat.getProdPlat().equals("")){
                wrapper.eq("prod_plat",prodPlat.getProdPlat());
            }  if (prodPlat.getPlatIcon() != null && !prodPlat.getPlatIcon().equals("")){
                wrapper.eq("plat_icon",prodPlat.getPlatIcon());
            }  if (prodPlat.getPlatLink() != null && !prodPlat.getPlatLink().equals("")){
                wrapper.eq("plat_link",prodPlat.getPlatLink());
            }  if (prodPlat.getDelFlag() != null && !prodPlat.getDelFlag().equals("")){
                wrapper.eq("del_flag",prodPlat.getDelFlag());
            }  if (prodPlat.getCreateUser() != null && !prodPlat.getCreateUser().equals("")){
                wrapper.eq("create_user",prodPlat.getCreateUser());
            }  if (prodPlat.getUpdateUser() != null && !prodPlat.getUpdateUser().equals("")){
                wrapper.eq("update_user",prodPlat.getUpdateUser());
            }  if(prodPlat.getCreateBeginTime() != null && !prodPlat.getCreateBeginTime().equals("")){
                if (prodPlat.getCreateEndTime() != null && !prodPlat.getCreateEndTime().equals("")){
                    wrapper.between("create_time",prodPlat.getCreateBeginTime(),prodPlat.getCreateEndTime());
                } else {
                    wrapper.ge("create_time",prodPlat.getCreateBeginTime());
                }
            }  if(prodPlat.getUpdateBeginTime() != null && !prodPlat.getUpdateBeginTime().equals("")){
                if (prodPlat.getUpdateEndTime() != null && !prodPlat.getUpdateEndTime().equals("")){
                    wrapper.between("update_time",prodPlat.getUpdateBeginTime(),prodPlat.getUpdateEndTime());
                } else {
                    wrapper.ge("update_time",prodPlat.getUpdateBeginTime());
                }
            }
            list = prodPlatMapper.selectList(wrapper);
        }
        return new Result<>(list);
    }

    @Override
    public Result<String> insertProdPlat(InsertProdPlatDto dto) {
        ProdPlat prodPlat = new ProdPlat();
        if (dto.getId() != null && !dto.getId().equals("")){
            return new Result<>(ErrorCode.A0008);
        } else {
            BeanUtils.copyProperties(dto,prodPlat);
            return new Result<>(JSON.toJSONString(prodPlatMapper.insert(prodPlat)));
        }
    }

    @Override
    public Result<String> updateProdPlat(UpdateProdPlatDto dto) {
        ProdPlat prodPlat = new ProdPlat();
        if (dto.getId() != null && !dto.getId().equals("")){
            BeanUtils.copyProperties(dto,prodPlat);
            return new Result<>(JSON.toJSONString(prodPlatMapper.updateById(prodPlat)));
        } else {
            return new Result<>(ErrorCode.A0007);
        }
    }

    @Override
    public Result<String> deleteProdPlatt(DeleteProdPlatDto dto) {
        ProdPlat prodPlat = new ProdPlat();
        if (dto.getId() != null && !dto.getId().equals("")){
            prodPlat.setId(dto.getId());
            prodPlat.setDelFlag("1");
            return new Result<>(JSON.toJSONString(prodPlatMapper.updateById(prodPlat)));
        } else {
            return new Result<>(ErrorCode.A0007);
        }
    }
}
